// SpryUtils.js - version 0.2 - Spry Pre-Release 1.6
//
// Copyright (c) 2007. Adobe Systems Incorporated.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

var Spry;if(!Spry)Spry={};if(!Spry.Utils)Spry.Utils={};Spry.Utils.submitForm=function(form,callback,opts)
{if(!form)
return true;if(typeof form=='string')
form=document.getElementById(form)||document.forms[form];var frmOpts={};frmOpts.method=form.method;frmOpts.url=form.action||document.location.href;frmOpts.enctype=form.enctype;Spry.Utils.setOptions(frmOpts,opts);var submitData=Spry.Utils.extractParamsFromForm(form,frmOpts.elements);if(frmOpts.additionalData)
submitData+="&"+frmOpts.additionalData;if(frmOpts.enctype.toLowerCase()!='multipart/form-data')
{frmOpts.method=(frmOpts.method.toLowerCase()=="post")?'POST':'GET';if(frmOpts.method=="GET")
{if(frmOpts.url.indexOf('?')==-1)
frmOpts.url+='?';else
frmOpts.url+='&';frmOpts.url+=submitData;}
else
{if(!frmOpts.headers)frmOpts.headers={};if(!frmOpts.headers['Content-Type']||frmOpts.headers['Content-Type'].indexOf("application/x-www-form-urlencoded")==-1)
frmOpts.headers['Content-Type']='application/x-www-form-urlencoded';frmOpts.postData=submitData;}
Spry.Utils.loadURL(frmOpts.method,frmOpts.url,true,callback,frmOpts);return false;}
return true;};Spry.Utils.extractParamsFromForm=function(form,elements)
{if(!form)
return'';if(typeof form=='string')
form=document.getElementById(form)||document.forms[form];var formElements;if(elements)
formElements=','+elements.join(',')+',';var compStack=new Array();var el;for(var i=0;i<form.elements.length;i++)
{el=form.elements[i];if(el.disabled||!el.name)
{continue;}
if(!el.type)
{continue;}
if(formElements&&formElements.indexOf(','+el.name+',')==-1)
continue;switch(el.type.toLowerCase())
{case'text':case'password':case'textarea':case'hidden':case'submit':compStack.push(encodeURIComponent(el.name)+'='+encodeURIComponent(el.value));break;case'select-one':var value='';var opt;if(el.selectedIndex>=0){opt=el.options[el.selectedIndex];value=opt.value||opt.text;}
compStack.push(encodeURIComponent(el.name)+'='+encodeURIComponent(value));break;case'select-multiple':for(var j=0;j<el.length;j++)
{if(el.options[j].selected)
{value=el.options[j].value||el.options[j].text;compStack.push(encodeURIComponent(el.name)+'='+encodeURIComponent(value));}}
break;case'checkbox':case'radio':if(el.checked)
compStack.push(encodeURIComponent(el.name)+'='+encodeURIComponent(el.value));break;default:break;}}
return compStack.join('&');};